/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package StrategyClass;

import generadorabm.Clase;
import java.util.List;

/**
 *
 * @author Martin
 */
public class Abstracta implements StrategyClase {

    public void darClase(List<String> claseG, Clase clase, String nombrePaquete) {
        try {
            String paquete = "package " + nombrePaquete + ";";
            String firma = "public abstract class " + clase.getNombre() + " ";
            if (!clase.getExtiende().isEmpty()) {
                if (clase.getExtiende().size() == 1) {
                    firma = firma + "extends " + clase.getExtiende().get(0) + " {";
                }
            }
            if (!clase.getImplementa().isEmpty()) {
                for (int i = 0; i < clase.getImplementa().size(); i++) {
                    if (i == clase.getImplementa().size() - 1) {
                        firma = firma + "implements " + clase.getImplementa().get(i) + "{ ";
                    } else {
                        firma = firma + "implements " + clase.getImplementa().get(i) + ", ";
                    }
                }
            }
            firma = firma + "{";
            claseG.add(paquete);
            claseG.add("     ");
            claseG.add(firma);
            claseG.add("}");
        } catch (Exception e) {
            throw new UnsupportedOperationException("Strategy Interface");
        }
    }
}
